package com.wanmait.schedule.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wanmait.schedule.entity.CompanyUser;
import com.wanmait.schedule.entity.Reject;
import com.wanmait.schedule.entity.Task;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 任务表 服务类
 * </p>
 *
 * @author wanmait
 * @since 2022-03-02
 */
public interface TaskService extends IService<Task> {
    /**接受项目，添加分配任务
     * */
    void addTask(Task task);
    /**查找任务列表 要排除掉部长自己,传入 发布任务人ID
     * */
    List<Task> taskList(Integer companyUserId);
    /**审核通过*/
    void taskPass(Integer taskId);
    /**审核不通过*/
    void taskNotPass(Integer taskId, Reject reject);
    /**部长单独 给组内成员分配任务*/
    void addExtraTask(Task task);
    /**部长查看某个成员任务列表*/
    Page<Task> memberTaskPageList(Integer companyUserId, Integer pageNum, Integer pageSize, String taskName, String taskDetail);
    /**部长查看任务这个任务详情*/
    Task taskDetail(Integer taskId);
    /**存储修改后的任务*/
    void saveTask(Task task);
    /**
     * 通过企业id和任务id查询项目
     */
     Task findTaskById(Task task);
    /**
     * 通过企业用户id查询所有的任务
     */
    List<Task> findAllTask(Integer companyUserId);
    /**
     * 通过企业用户id查询企业直接下发的任务
     */
    List<Task> enterpriseTask(Integer companyUserId);
    /**查找任务在身的离职人员
    * */
    List<CompanyUser> findResignMember(Integer departmentId);
    /**强制 结束离职人员的任务  提交，审核通过
     * */
    void overTask(Integer taskId);
    //通过企业用户id查询出已审核通过的项目
    List<Task> completedFindAll(Integer companyUserId);
    //通过企业用户id查询出已审核通过的企业直接下发的项目
    List<Task> completedCompanyFindAll(Integer companyUserId);
    //通过企业id查询出已提交的项目
    List<Task> submittedFindAll(Integer companyUserId);
    //通过企业用户id查询出已提交的企业直接下发的项目
    List<Task> submittedCompanyFindAll(Integer companyUserId);
    //通过企业id和部门id查询所有的任务(未完成)
    List<Task> findAllContinued(Task task);
    //通过企业id和部门id查询所有的任务(已提交)
    List<Task> findAllSubmitted(Task task);
    //通过企业id和部门id查询所有的任务(已完成)
    List<Task> findAllDone(Task task);
    //通过企业id和部门id查询所有的任务
    List<Task> findAllQueryAll(Integer companyId,Integer departmentId);
    //通过企业用户id查询所有的任务(企业直接下发的任务)
    List<Task> findAllCompanyTask(Integer id);
}
